package com.cloud.bssp.reference;

import java.lang.ref.WeakReference;

/**
 * @description： 弱引用
 *
 * 弱引用也是用来描述那些非必须对象，但是它的强度比软引用更弱一些，被弱引用关联的对象只
 * 能生存到下一次垃圾收集发生为止。当垃圾收集器开始工作，无论当前内存是否足够，都会回收掉只
 * 被弱引用关联的对象。在JDK 1.2版之后提供了WeakReference类来实现弱引用。
 *
 * 弱引若无哈希key
 * 内存漏洞全补上
 *
 * 应用：ThreadLocal
 * @author：weirx
 * @date：2021/5/19 16:54
 * @version：3.0
 */
public class WeakReferenceTest {

    public static void main(String[] args) throws InterruptedException {
        WeakReference<byte[]> w = new WeakReference<>(new byte[1024 * 1024 * 10]);

        System.out.println(w.get());

        System.gc();
        Thread.sleep(1000);

        //只经历一次gc就被回收了
        System.out.println(w.get());

    }
}
